#pragma once

#include <vector>
#include <map>
#include <list>
#include <algorithm>
using namespace std;

typedef struct _OptionStrike
{
	string Price;
	double StrikePrice;
	string StrikeDesc;
	string CallCode;
	string PutCode;
	BOOL    IsATM;
} OptionStrike;

typedef vector<OptionStrike> vectorOptionStrike;
typedef vector<OptionStrike>::iterator  OptionStrikePos;

typedef list<OptionStrike*> listOptionStrike;
typedef list<OptionStrike*>::iterator  OptionStrikeListPos;

typedef map<string, OptionStrike*> mapOptionStrike;
typedef pair<string, OptionStrike*> pairOptionStrike;
typedef map<string, OptionStrike*>::iterator OptionStrikeMapPos;

typedef struct _OptionMonth
{
	string MonthDesc;
	string MonthCode;
	string FutureCode;
	vectorOptionStrike vecStrikes;
	mapOptionStrike mapStrikes;
	BOOL  IsATM;
} OptionMonth;

typedef vector<OptionMonth> vectorOptionMonth;
typedef vector<OptionMonth>::iterator OptionMonthPos;

typedef map<string, OptionMonth*> mapOptionMonth;
typedef pair<string, OptionMonth*> pairOptionMonth;
typedef map<string, OptionMonth*>::iterator OptionMonthMapPos;

class COptionStrikes
{
public:
	COptionStrikes();
	~COptionStrikes();

	vectorOptionMonth m_OptionMonths;
};

